<h1 label="标题居中" style="font-size: 32px; font-weight: bold; border-bottom-color: rgb(204, 204, 204); border-bottom-width: 2px; border-bottom-style: solid; padding: 0px 4px 0px 0px; text-align: center; margin: 0px 0px 20px;"><a href="http://php.net/manual/zh/language.types.array.php" target="_blank" title="数组">Arrays</a><br/></h1><p>PHP中的数组实际上是一个有序映射。映射是一种把&nbsp;values&nbsp;关联到&nbsp;keys&nbsp;的类型。</p><p>可以用&nbsp;array()&nbsp;语言结构来新建一个数组。它接受任意数量用逗号分隔的&nbsp;键（key）&nbsp;=&gt;&nbsp;值（value）对。</p><pre>array(&nbsp;&nbsp;key&nbsp;=&gt;&nbsp;&nbsp;value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
//&nbsp;键（key）可是是一个整数&nbsp;integer&nbsp;或字符串&nbsp;string//&nbsp;值（value）可以是任意类型的值</pre><p>最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中，例如常用&nbsp;array(1, 2)&nbsp;而不是&nbsp;array(1, 2, )。对多行数组定义通常保留最后一个逗号，这样要添加一个新单元时更方便。</p><pre class="brush:php;toolbar:false">$array_1&nbsp;=&nbsp;array(1,&nbsp;2,&nbsp;3);
$array_2&nbsp;=&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3,
);</pre><p>自 5.4 起可以使用短数组定义语法，用&nbsp;[]&nbsp;替代&nbsp;array()。</p><pre class="brush:php;toolbar:false">$array_1&nbsp;=&nbsp;array(1,&nbsp;2,&nbsp;3);
$array_2&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3];
//&nbsp;以上两种定义方式相等，均输出：
//&nbsp;array&nbsp;(size=3)
//&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&gt;&nbsp;int&nbsp;1
//&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&gt;&nbsp;int&nbsp;2
//&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;=&gt;&nbsp;int&nbsp;3</pre><p><strong>key&nbsp;可以是&nbsp;integer&nbsp;或者&nbsp;string。value&nbsp;可以是任意类型。</strong></p><p>此外&nbsp;key&nbsp;会有如下的强制转换：</p><ul class="itemizedlist list-paddingleft-2" style="list-style-type: circle;"><li><p>包含有合法整型值的字符串会被转换为整型。例如键名&nbsp;&quot;8&quot;&nbsp;实际会被储存为&nbsp;8。但是&nbsp;&quot;08&quot;&nbsp;则不会强制转换，因为其不是一个合法的十进制数值。</p></li><li><p>浮点数也会被转换为整型，意味着其小数部分会被舍去。例如键名&nbsp;8.7&nbsp;实际会被储存为&nbsp;8。</p></li><li><p>布尔值也会被转换成整型。即键名&nbsp;true&nbsp;实际会被储存为&nbsp;1&nbsp;而键名&nbsp;false&nbsp;会被储存为&nbsp;0。</p></li><li><p>Null&nbsp;会被转换为空字符串，即键名&nbsp;null&nbsp;实际会被储存为&nbsp;&quot;&quot;。</p></li><li><p>数组和对象不能被用为键名。坚持这么做会导致警告：Illegal offset type。</p></li></ul><pre class="brush:php;toolbar:false">$array&nbsp;=&nbsp;[&#39;8&#39;=&gt;&#39;8&#39;];
var_dump($array);
//&nbsp;合法整型值的字符串会被转换为整型
//&nbsp;输出
//&nbsp;array&nbsp;(size=1)
//&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;=&gt;&nbsp;string&nbsp;&#39;8&#39;&nbsp;(length=1)
$array&nbsp;=&nbsp;[&#39;08&#39;=&gt;&#39;8&#39;];
var_dump($array);
//&nbsp;非合法整型值，不会被转换
//&nbsp;输出
//&nbsp;array&nbsp;(size=1)
//&nbsp;&nbsp;&nbsp;&nbsp;&#39;08&#39;&nbsp;=&gt;&nbsp;string&nbsp;&#39;8&#39;&nbsp;(length=1)
$array&nbsp;=&nbsp;[8.78=&gt;&#39;8&#39;];
var_dump($array);
//&nbsp;浮点数会被转换为整型，小数部分会被舍去
//&nbsp;输出
//&nbsp;array&nbsp;(size=1)
//&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;=&gt;&nbsp;string&nbsp;&#39;8&#39;&nbsp;(length=1)
$array&nbsp;=&nbsp;[&#39;8.78&#39;=&gt;&#39;8&#39;];
var_dump($array);
//&nbsp;非合法整型值，不会被转换
//&nbsp;输出
//&nbsp;array&nbsp;(size=1)
//&nbsp;&nbsp;&nbsp;&nbsp;&#39;8.78&#39;&nbsp;=&gt;&nbsp;string&nbsp;&#39;8&#39;&nbsp;(length=1)
$array&nbsp;=&nbsp;[true=&gt;true,&nbsp;false=&gt;false];
var_dump($array);
//&nbsp;布尔型也会被转换为整型
//&nbsp;输出
//&nbsp;array&nbsp;(size=2)
//&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&gt;&nbsp;boolean&nbsp;true
//&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&gt;&nbsp;boolean&nbsp;false
$a&nbsp;=&nbsp;array(null=&gt;123);
var_dump($a);
//&nbsp;NULL会被转换为空字符串
//&nbsp;输出
//&nbsp;array&nbsp;(size=1)
//&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;=&gt;&nbsp;int&nbsp;123
$array&nbsp;=&nbsp;[array(1)=&gt;&#39;8&#39;];
var_dump($array);
//&nbsp;数组和对象不能用作键名
//&nbsp;输出
//&nbsp;Warning:&nbsp;Illegal&nbsp;offset&nbsp;type&nbsp;in&nbsp;E:\test.php&nbsp;on&nbsp;line&nbsp;93
//&nbsp;array&nbsp;(size=0)
//&nbsp;&nbsp;&nbsp;&nbsp;empty</pre><p>如果在数组定义中多个单元都使用了同一个键名，则只使用了最后一个，之前的都被覆盖了。</p><pre class="brush:php;toolbar:false">$array&nbsp;=&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&quot;a&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;1&quot;&nbsp;&nbsp;=&gt;&nbsp;&quot;b&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;1.5&nbsp;&nbsp;=&gt;&nbsp;&quot;c&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;true&nbsp;=&gt;&nbsp;&quot;d&quot;,
);
var_dump($array);
//&nbsp;同一键名，后定义的覆盖之前定义的
//&nbsp;输出
//&nbsp;array(1)&nbsp;{
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[1]=&gt;string(1)&nbsp;&quot;d&quot;
//&nbsp;}</pre><p>PHP 数组可以同时含有&nbsp;integer&nbsp;和&nbsp;string&nbsp;类型的键名，因为 PHP 实际并不区分索引数组和关联数组。</p><pre class="brush:php;toolbar:false">$array&nbsp;=&nbsp;array(
	&quot;foo&quot;&nbsp;=&gt;&nbsp;&quot;bar&quot;,
	&quot;bar&quot;&nbsp;=&gt;&nbsp;&quot;foo&quot;,
	100&nbsp;&nbsp;&nbsp;=&gt;&nbsp;-100,
	-100&nbsp;&nbsp;=&gt;&nbsp;100,
);
var_dump($array);
//&nbsp;输出
//&nbsp;array&nbsp;(size=4)
//&nbsp;&nbsp;&nbsp;&nbsp;&#39;foo&#39;&nbsp;=&gt;&nbsp;string&nbsp;&#39;bar&#39;&nbsp;(length=3)
//&nbsp;&nbsp;&nbsp;&nbsp;&#39;bar&#39;&nbsp;=&gt;&nbsp;string&nbsp;&#39;foo&#39;&nbsp;(length=3)
//&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;=&gt;&nbsp;int&nbsp;-100
//&nbsp;&nbsp;&nbsp;&nbsp;-100&nbsp;=&gt;&nbsp;int&nbsp;100</pre><p>如果对给出的值没有指定键名，则取当前最大的整数索引值，而新的键名将是该值加一。如果指定的键名已经有了值，则该值会被覆盖。</p><p>key&nbsp;为可选项。如果未指定，PHP 将自动使用之前用过的最大&nbsp;integer&nbsp;键名加上 1 作为新的键名。<br/></p><p>自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。</p><p>自 PHP 5.5 起可以用数组间接引用一个数组原型。</p>